'use strict';
const db = uniCloud.database();
const dbCmd = db.command;

/**
 * 修复订单的激活日期
 * 将所有已完成订单的 activation_date 从 +15天 改为 +7天
 * 这样激活日期已到的订单就能被定时任务激活
 */
exports.main = async (event, context) => {
    console.log('开始修复订单的激活日期...');
    const now = Date.now();
    
    try {
        // 查找所有已完成但激活日期还未到的订单
        // 这些订单可能是由 daily-order-sync-task 创建的，使用了 15 天周期
        const ordersToFix = await db.collection('orders').where({
            status: 'completed',
            commission_status: 'pending',
            activation_date: dbCmd.gt(now),  // 激活日期还未到
            completed_time: dbCmd.exists(true)
        }).get();
        
        if (ordersToFix.data.length === 0) {
            console.log('没有需要修复的订单。任务结束。');
            return { fixedCount: 0, message: '没有需要修复的订单' };
        }
        
        console.log(`发现 ${ordersToFix.data.length} 条需要修复的订单。`);
        let fixedCount = 0;
        let errorCount = 0;
        
        for (const order of ordersToFix.data) {
            try {
                // 计算新的激活日期（完成时间 + 7天）
                const newActivationDate = order.completed_time + 7 * 24 * 60 * 60 * 1000;
                
                // 检查是否需要修复（原激活日期是否是 +15天）
                const expectedOldDate = order.completed_time + 15 * 24 * 60 * 60 * 1000;
                const needsFix = Math.abs(order.activation_date - expectedOldDate) < 1000; // 允许 1 秒误差
                
                if (!needsFix) {
                    console.log(`⏭️ 订单 ${order._id} 的激活日期已是正确值，跳过`);
                    continue;
                }
                
                await db.collection('orders').doc(order._id).update({
                    activation_date: newActivationDate,
                    activation_countdown: 7
                });
                
                fixedCount++;
                const daysUntilActivation = Math.ceil((newActivationDate - now) / (24 * 60 * 60 * 1000));
                console.log(`✅ 订单 ${order._id} 的激活日期已修复（${daysUntilActivation} 天后激活）`);
            } catch (err) {
                errorCount++;
                console.error(`❌ 修复订单 ${order._id} 失败:`, err.message);
            }
        }
        
        console.log(`修复完成。成功: ${fixedCount}，失败: ${errorCount}`);
        return { 
            fixedCount, 
            errorCount,
            message: `成功修复 ${fixedCount} 条订单的激活日期`
        };
    } catch (err) {
        console.error('修复任务失败:', err.message);
        return { 
            code: 500, 
            message: `修复失败: ${err.message}` 
        };
    }
};

